﻿using System.Linq;

namespace Creventive.Wpf.ShellFactory.Utility
{
    /// <summary>
    ///   Utility structure for quickly passing a pair of values.
    /// </summary>
    /// <typeparam name = "T1">The type of the first value.</typeparam>
    /// <typeparam name = "T2">The type of the second value.</typeparam>
    public struct Pair<T1, T2>
    {
        private T1 first;
        private T2 second;

        /// <summary>
        ///   Initializes a new instance of the <see cref = "Pair&lt;T1, T2&gt;" /> struct.
        /// </summary>
        /// <param name = "first">The first.</param>
        /// <param name = "second">The second.</param>
        public Pair(T1 first, T2 second)
        {
            this.first = first;
            this.second = second;
        }

        /// <summary>
        ///   Gets the first value.
        /// </summary>
        /// <value>The first.</value>
        public T1 First
        {
            get { return this.first; }
        }

        /// <summary>
        ///   Gets the second value.
        /// </summary>
        /// <value>The second.</value>
        public T2 Second
        {
            get { return this.second; }
        }
    }
}